#pragma once

#include <vector>
#include <string>

struct Node {
    int id;
    double lon;
    double lat;
};

struct Edge {
    int from;
    int to;
};

struct GraphData {
    std::vector<Node> nodes;
    std::vector<Edge> edges;
};

using ClusteredEdges = std::vector<std::vector<Edge>>;

ClusteredEdges clusterEdges(const std::vector<Edge>& edges,
                             const std::vector<Node>& nodes,
                             int k,
                             int maxIterations);